// ml:run = $bin < input
#include <fstream>
#include <cmath>
#include <queue>
#include <iomanip>
#include <vector>

std::ifstream fin{"froggy.in"};
std::ofstream fout{"froggy.out"};

using ll = long long;
struct pos { ll x, y; };

double const eps = 1e-7;
int const maxn = 2000;
double ansx, ansy;
std::vector<pos> a;
ll n, w;

bool vis[maxn];
int co[maxn];

double dis(pos const& a, pos const& b)
{
    double dx = (a.x - b.x);
    double dy = (a.y - b.y);
    return std::sqrt(dx * dx + dy * dy);
}

bool judge(double mid)
{
    for (int i = 0; i < n; i++) co[i] = 0;

    {
        for (int i = 0; i < n; i++) vis[i] = false;
        std::queue<int> q;
        for (int i = 0; i < n; i++)
            if (a[i].x <= mid + eps) { q.push(i); vis[i] = true; co[i] += 1; }
        while (!q.empty()) {
            int now = q.front(); q.pop();
            for (int i = 0; i < n; i++) {
                if (vis[i]) continue;
                double d = dis(a[i], a[now]);
                if (d <= mid + eps) {
                    q.push(i); vis[i] = true; co[i] += 1;
                }
            }
        }
    }

    {
        for (int i = 0; i < n; i++) vis[i] = false;
        std::queue<int> q;
        for (int i = 0; i < n; i++)
            if (w - a[i].x <= mid + eps) { q.push(i); vis[i] = true; co[i] += 2; }
        while (!q.empty()) {
            int now = q.front(); q.pop();
            for (int i = 0; i < n; i++) {
                if (vis[i]) continue;
                double d = dis(a[i], a[now]);
                if (d <= mid + eps) {
                    q.push(i); vis[i] = true; co[i] += 2;
                }
            }
        }
    }

    double min = w / 2.0;
    ansx = w / 2.0; ansy = 0;
    for (int i = 0; i < n; i++)
        if (co[i] == 3) return true;
    for (int j = 0; j < n; j++) {
        if (co[j] != 2) continue;
        double d = a[j].x;
        d /= 2.0;
        if (d < min) {
            min = d;
            ansx = a[j].x / 2.0;
            ansy = a[j].y;
        }
    }
    for (int i = 0; i < n; i++) {
        if (co[i] != 1) continue;
        double d = w - a[i].x;
        d /= 2.0;
        if (d < min) {
            min = d;
            ansx = (a[i].x + w) / 2.0;
            ansy = a[i].y;
        }
        for (int j = 0; j < n; j++) {
            if (co[j] != 2) continue;
            double d = a[j].x;
            d /= 2.0;
            if (d < min) {
                min = d;
                ansx = a[j].x / 2.0;
                ansy = a[j].y;
            }
            d = dis(a[i], a[j]) / 2.0;
            if (d < min) {
                min = d;
                ansx = (a[i].x + a[j].x) / 2.0;
                ansy = (a[i].y + a[j].y) / 2.0;
            }
        }
    }
    return (min <= mid + eps);
}

int main()
{
    std::ios_base::sync_with_stdio(false);
    fin >> w >> n;
    a.resize(n);
    for (int i = 0; i < n; i++) fin >> a[i].x >> a[i].y;
    double l = 0, r = w;
    for (int i = 0; i < 30; i++) {
        double mid = (l + r) / 2.0;
        if (judge(mid)) r = mid;
        else l = mid;
    }
    judge(r);
    fout << std::fixed << std::setprecision(3) << ansx << " " << ansy << "\n";
}

